

package fr.eisti.ing1.projetgsiKlelifaRazavet.Objets;
//imports nécessaires
import java.util.Calendar;

/**
 * La classe Parcours
 * @author Klelifa Sarah, Razavet Maël
 * @version 1.0
 */
public class Parcours {

    //Déclaration des attributs
    private int idPersonne;
    private int idParcours;
    private String nomEtablissement;
    private Calendar dateDebut;
    private Calendar dateFin;
    private Adresse adresse;

    /**
     * constructeur initialisée
     * @param idParcours
     * @param nomEtablissement
     * @param dateDebut
     * @param dateFin
     * @param idPersonne
     * @param adresse
     */
    public Parcours(int idParcours, int idPersonne, String nomEtablissement, Calendar dateDebut, Calendar dateFin, Adresse adresse){
        this.idParcours=idParcours;
        this.nomEtablissement=nomEtablissement;
        this.dateDebut=dateDebut;
        this.dateFin=dateFin;
        this.idPersonne = idPersonne;
        this.adresse = adresse;
    }

    
    /**
     * Constructeur d'un parcours sans les ID
     * @param nomEtablissement
     * @param dateDebut
     * @param dateFin
     * @param adresse
     */
    public Parcours(String nomEtablissement, Calendar dateDebut, Calendar dateFin,Adresse adresse) {
        this.nomEtablissement = nomEtablissement;
        this.dateDebut = dateDebut;
        this.dateFin = dateFin;
        this.adresse = adresse;
        this.idParcours=-1;
        this.idPersonne = -1;
    }

    @Override
    public String toString(){
        String dateFinString;
        dateFinString = "non renseigné";
        if(dateFin!=null){
            dateFinString = dateFin.getTime().toString();

        }
        return nomEtablissement + " de " +dateDebut.getTime() + " a "+dateFinString+ " à l'adresse "+adresse;
    }

    /**
     * Récupère l'id d'une personne lié a un parcours
     * @return idPersonne : l'id de la personne lié au parcours
     */
    public int getIdPersonne() {
        return idPersonne;
    }

    /**
     * récupère la date de début du parcours
     * @return dateDebut la date de début du parcours
     */
    public Calendar getDateDebut() {
        return dateDebut;
    }

   

    /**
     * récupère la date de fin du parcours
     * @return dateFin la date de fin du parcours
     */
    public Calendar getDateFin() {
        return dateFin;
    }

    /**
     * Récupère l'adresse d'un parcours
     * @return adresse adresse du parcours
     */
    public Adresse getAdresse() {
        return adresse;
    }



    /**
     * récupère lid du parcours
     * @return idParcours l'id du parcours
     */
    public int getIdParcours() {
        return idParcours;
    }


    /**
     * récupère le nom d'établissement du parcours
     * @return nomEtablissement le nom d'établissement du parcours
     */
    public String getNomEtablissement() {
        return nomEtablissement;
    }


    @Override
    public int hashCode(){
        //id unique donc code unique
        return this.idParcours;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        Parcours other = (Parcours) obj;
        //on ne test que les id car ils sont unique
        return this.idParcours == other.idParcours;
    }

}
